/**
 * Created by PanJiaChen on 16/11/18.
 */

/**
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.indexOf(str.trim()) >= 0
}

/**
 * 检测输入框是否输入中文
 *
 * @export
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export function validChinese(rule, value, callback) {
  if (value) {
    /[\u4E00-\u9FA5]/g.test(value) && callback(new Error('请勿输入中文!'))
    callback()
  }
  callback()
}

/**
 * 价格检测 只能摄入整数或两位小数
 *
 * @export
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export function validPrice(rule, value, callback) {
  if (value) {
    !/^\d+(\.\d{0,2})?$/g.test(value) && callback(new Error('请输入整数或保留两位小数!'))
    callback()
  }
  callback()
}

/**
 * 账号验证 只能输入字母或者数字
 *
 * @export
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export function validAccount(rule, value, callback) {
  if (value) {
    !/^[A-Za-z0-9]+$/g.test(value) && callback(new Error('请输入字母或数字!'))
    callback()
  }
  callback()
}

/**
 * 验证整数
 *
 * @export
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export function validInt(rule, value, callback) {
  if (value) {
    !/^\d+$/g.test(value) && callback(new Error('请输入整数!'))
    callback()
  }
  callback()
}

/**
 * 手机号验证
 *
 * @export
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export function validPhone(rule, value, callback) {
  if (value) {
    !/^1[3-9]\d{9}$/.test(value) && callback(new Error('请输入正确的手机号!'))
    callback()
  }
  callback()
}

/**
 * 身份证验证
 *
 * @export
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export function validIDCard(rule, value, callback) {
  if (value) {
    !/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/g.test(value) &&
      callback(new Error('请输入正确的身份证号'))
    callback()
  }
  callback()
}

/**
 * 验证两次输入的密码是否相同
 *
 * @export
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 * @param {*} pwd 第一次输入的密码
 */
export function validPassword(rule, value, callback, pwd) {
  value !== pwd && callback(new Error('两次输入的密码不同'))
  callback()
}
